home *** CD-ROM | disk | FTP | other *** search
- {
- > I'm trying to come up with a registration keying routine for my
- > software, but am at kind of a loss on how to do it and make it somewhat
- > secure or a pain to crack.
- > Here's a program that supposedly uses RSA encryption, but it must be for
- > an older pascal because I couldn't get it to compile with version 7.0
- > since it tries to use a declaration of Integer[36]. I tried it with
- > just a regular Integer declaration and I couldn't get it to work (I
- > think).
-
- OKay... As I recall, that Integer[36] thingy was implemented on DEC
- VMS systems (possibly others) as kind of a work around for, faster than
- real, large (greater than maxint) integer math applications. You might
- try declaring the variables as longint to test out the algorithm..
- It's 32 bit, but then it may be a hair too small even for the math
- tricks that your rsa is doing... Making such large numbers that it
- needs 36 bit integers to avoid overflows..
-
- Anyway. I was really wondering why you didn't want to implement an
- XOR type of encryption method.. It's really so much faster than any
- math trick type of implementation...As there is really no math
- involved..
-
- Encryption security has three basic concerns:
-
- It has to be secure when the enemy knows or has in possesion the method
- that you encrypted your target,
- It has to be secure when the enemy has in his possesion, your target,
- And it has to be secure if the enemy has in possesion, your method,
- your target and your key.
-
- Whatever the method you use, all you are really doing is changing the
- value of a byte (the simplest item) to some other value. Or you are
- restructuring the method of access.
-
- Or in plain english, you compress your file, then mess it up with
- some encryption algorithm that uses a key to decrypt it.
- How you compress, and how you encrypt doesn't really matter.
-
- What matters, is the possible number of ways that you COULD have
- used. If that number (of ways) is computable, then your encryption
- method is crackable.
-
- This number (of possible methods) is called the domain of solutions.
- If the domain of solutions can be written into a program then any
- method and combinations of methods is crackable.
-
- To be uncrackable, the domain of solutions must be uncomputable.
- Actually, it may very well BE crackable, but so long as it is
- uncomputable, the cracker has no way to determine where to begin
- cracking! Thus the defence or security lies not in remaining
- uncrackable, but in remaining encrypted. Making it take too long to
- crack. In other words just how much time will it take to solve the
- puzzle and for how long does the puzzle have to remain unsolved before
- it is no longer relevant.
-
- The perfect encryption engine, would be something that has too vast
- of a number of methods to be computable, yet very simple to operate and
- use. The answer to this seemingly paradoxical question is simple. You
- have to introduce a non machine element into the engine. The human
- element. A human determined key sequence. In other words, your key is
- defined not by position or elements, but in steps. Or instructions on
- what to do that is not machine or engine readable. Or in other words,
- it can't be automatic (one step) and secure.
-
- There are many methods, including weird math methods. However, it has
- been shown that ALL weird math methods are no more secure than simply
- adding 1 to the value of any byte. The proof of this was published in
- a mathamatical journal some years ago, sorry, I don't remember what it
- was.. But it basicly stated that any weird math method could be broken
- by a simple brute force program that shifted the values of varying
- lengths of bits of a small portion of the target until it found
- recognizable text or data.
-
- Practical concerns:
- You want a Keyed registration system. You want to be able to send
- the registered user a post card with some instructions on it on how to
- make his program registered. This instruction card must be unique to
- his copy of the program. I assume that the unregistered version of the
- program will be massively distributed I.E. Shareware concept. Simple.
- You have two maybe three steps involved.
- 1 : A uniqueness must be made in the program, something that
- identifies and connects that particular copy of the program to that
- particular registered user. A name...
- 2: You need some method of securing the program to that particular
- registered user. A number or code that interacts with the name to
- produce a file, or key that must then be present during operation for
- the program to work in the registered mode.
- 3: The program must be made aware that it has been registered and if
- the registration code is found to be missing, it will revert to an
- unregistered mode.
-
- What may happen: If the name and code is given out or stolen,
- it must not work with any other copy of the software. This is the
- most difficult effect to produce and is not possible to implement
- without your direct involvement in the proccess. Don't expect to be
- able to produce this effect without direct involvment. In effect, you
- have to make a unique modification to the program unknown to the user.
-
- I once worked on a project that had to be totally secured in this
- manner. The software had to be registered not only to a specific
- individual or company, but also had to be registered to a single
- machine. We had to be absolutely sure that there were not multiple
- copies of the software executing on different machines, or indeed on
- the same machine or that there were multiple copies of the software
- that could be installed/deinstalled on the same machine. It was a
- financial system and the possibility of using it to produce multiple
- books existed which we had to avoid at all costs. It took a while but
- we solved the problem, unfortunately the software was never produced or
- used, as the company I created this system for went belly up before the
- project was installed and the project was cancelled.
-
- What we used was a regestration key file, that was modified by the
- software, so that it couldn't be used again, it couldn't be used by any
- other copy of the program. However, if something adverse happened, the
- program knew that it was modified and the same copy of the software
- (that had been origionally registered) could use the key again. Also,
- the key was time stamped, it was only good for a certain range of
- dates, it couldn't be used to register a copy of the program outside a
- 3 day limit. Also, the software wouldn't operate, even if it was
- registered, if it detected that the date was 30 days since it last
- operated. It had to be in continuous use at least every 29 days for it
- to remain registered. Remember that this was a financial package, and
- it had to remain updated to be relevant. We also had planned to link
- to and download it's data every 30 days and provide a new key to
- operate for the next 30 days. Thus if the software was installed, and
- the phone lines went down, or we went out of business, the software
- would refuse to operate ( in fact it would self destruct and encrypt
- all work in progress) after 30 days of no contact with home office.
- Also note that at no time did the end user ever have the key file
- before the program saw it first and got a chance to modify it. Once
- that happened, it couldn't be used by some other copy. Also, we
- planned on not telling the end users that the software would only work
- on one machine ( the machine it was installed on) We wanted them to
- attempt to pirate the software..
- Why?
- So that we could test their honesty as partners in the business...
-
- I suppose that this was somewhat mercenary on our part, but then, I
- didn't make those kinds of decisions, I just wrote the software....
- }